package com.weibotwo.pojo;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class WeiboTabExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public WeiboTabExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<java.sql.Date>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        public Criteria andMIdIsNull() {
            addCriterion("m_id is null");
            return (Criteria) this;
        }

        public Criteria andMIdIsNotNull() {
            addCriterion("m_id is not null");
            return (Criteria) this;
        }

        public Criteria andMIdEqualTo(Long value) {
            addCriterion("m_id =", value, "mId");
            return (Criteria) this;
        }

        public Criteria andMIdNotEqualTo(Long value) {
            addCriterion("m_id <>", value, "mId");
            return (Criteria) this;
        }

        public Criteria andMIdGreaterThan(Long value) {
            addCriterion("m_id >", value, "mId");
            return (Criteria) this;
        }

        public Criteria andMIdGreaterThanOrEqualTo(Long value) {
            addCriterion("m_id >=", value, "mId");
            return (Criteria) this;
        }

        public Criteria andMIdLessThan(Long value) {
            addCriterion("m_id <", value, "mId");
            return (Criteria) this;
        }

        public Criteria andMIdLessThanOrEqualTo(Long value) {
            addCriterion("m_id <=", value, "mId");
            return (Criteria) this;
        }

        public Criteria andMIdIn(List<Long> values) {
            addCriterion("m_id in", values, "mId");
            return (Criteria) this;
        }

        public Criteria andMIdNotIn(List<Long> values) {
            addCriterion("m_id not in", values, "mId");
            return (Criteria) this;
        }

        public Criteria andMIdBetween(Long value1, Long value2) {
            addCriterion("m_id between", value1, value2, "mId");
            return (Criteria) this;
        }

        public Criteria andMIdNotBetween(Long value1, Long value2) {
            addCriterion("m_id not between", value1, value2, "mId");
            return (Criteria) this;
        }

        public Criteria andUIdIsNull() {
            addCriterion("u_id is null");
            return (Criteria) this;
        }

        public Criteria andUIdIsNotNull() {
            addCriterion("u_id is not null");
            return (Criteria) this;
        }

        public Criteria andUIdEqualTo(Long value) {
            addCriterion("u_id =", value, "uId");
            return (Criteria) this;
        }

        public Criteria andUIdNotEqualTo(Long value) {
            addCriterion("u_id <>", value, "uId");
            return (Criteria) this;
        }

        public Criteria andUIdGreaterThan(Long value) {
            addCriterion("u_id >", value, "uId");
            return (Criteria) this;
        }

        public Criteria andUIdGreaterThanOrEqualTo(Long value) {
            addCriterion("u_id >=", value, "uId");
            return (Criteria) this;
        }

        public Criteria andUIdLessThan(Long value) {
            addCriterion("u_id <", value, "uId");
            return (Criteria) this;
        }

        public Criteria andUIdLessThanOrEqualTo(Long value) {
            addCriterion("u_id <=", value, "uId");
            return (Criteria) this;
        }

        public Criteria andUIdIn(List<Long> values) {
            addCriterion("u_id in", values, "uId");
            return (Criteria) this;
        }

        public Criteria andUIdNotIn(List<Long> values) {
            addCriterion("u_id not in", values, "uId");
            return (Criteria) this;
        }

        public Criteria andUIdBetween(Long value1, Long value2) {
            addCriterion("u_id between", value1, value2, "uId");
            return (Criteria) this;
        }

        public Criteria andUIdNotBetween(Long value1, Long value2) {
            addCriterion("u_id not between", value1, value2, "uId");
            return (Criteria) this;
        }

        public Criteria andMTranumIsNull() {
            addCriterion("m_tranum is null");
            return (Criteria) this;
        }

        public Criteria andMTranumIsNotNull() {
            addCriterion("m_tranum is not null");
            return (Criteria) this;
        }

        public Criteria andMTranumEqualTo(Long value) {
            addCriterion("m_tranum =", value, "mTranum");
            return (Criteria) this;
        }

        public Criteria andMTranumNotEqualTo(Long value) {
            addCriterion("m_tranum <>", value, "mTranum");
            return (Criteria) this;
        }

        public Criteria andMTranumGreaterThan(Long value) {
            addCriterion("m_tranum >", value, "mTranum");
            return (Criteria) this;
        }

        public Criteria andMTranumGreaterThanOrEqualTo(Long value) {
            addCriterion("m_tranum >=", value, "mTranum");
            return (Criteria) this;
        }

        public Criteria andMTranumLessThan(Long value) {
            addCriterion("m_tranum <", value, "mTranum");
            return (Criteria) this;
        }

        public Criteria andMTranumLessThanOrEqualTo(Long value) {
            addCriterion("m_tranum <=", value, "mTranum");
            return (Criteria) this;
        }

        public Criteria andMTranumIn(List<Long> values) {
            addCriterion("m_tranum in", values, "mTranum");
            return (Criteria) this;
        }

        public Criteria andMTranumNotIn(List<Long> values) {
            addCriterion("m_tranum not in", values, "mTranum");
            return (Criteria) this;
        }

        public Criteria andMTranumBetween(Long value1, Long value2) {
            addCriterion("m_tranum between", value1, value2, "mTranum");
            return (Criteria) this;
        }

        public Criteria andMTranumNotBetween(Long value1, Long value2) {
            addCriterion("m_tranum not between", value1, value2, "mTranum");
            return (Criteria) this;
        }

        public Criteria andMComnumIsNull() {
            addCriterion("m_comnum is null");
            return (Criteria) this;
        }

        public Criteria andMComnumIsNotNull() {
            addCriterion("m_comnum is not null");
            return (Criteria) this;
        }

        public Criteria andMComnumEqualTo(Long value) {
            addCriterion("m_comnum =", value, "mComnum");
            return (Criteria) this;
        }

        public Criteria andMComnumNotEqualTo(Long value) {
            addCriterion("m_comnum <>", value, "mComnum");
            return (Criteria) this;
        }

        public Criteria andMComnumGreaterThan(Long value) {
            addCriterion("m_comnum >", value, "mComnum");
            return (Criteria) this;
        }

        public Criteria andMComnumGreaterThanOrEqualTo(Long value) {
            addCriterion("m_comnum >=", value, "mComnum");
            return (Criteria) this;
        }

        public Criteria andMComnumLessThan(Long value) {
            addCriterion("m_comnum <", value, "mComnum");
            return (Criteria) this;
        }

        public Criteria andMComnumLessThanOrEqualTo(Long value) {
            addCriterion("m_comnum <=", value, "mComnum");
            return (Criteria) this;
        }

        public Criteria andMComnumIn(List<Long> values) {
            addCriterion("m_comnum in", values, "mComnum");
            return (Criteria) this;
        }

        public Criteria andMComnumNotIn(List<Long> values) {
            addCriterion("m_comnum not in", values, "mComnum");
            return (Criteria) this;
        }

        public Criteria andMComnumBetween(Long value1, Long value2) {
            addCriterion("m_comnum between", value1, value2, "mComnum");
            return (Criteria) this;
        }

        public Criteria andMComnumNotBetween(Long value1, Long value2) {
            addCriterion("m_comnum not between", value1, value2, "mComnum");
            return (Criteria) this;
        }

        public Criteria andMColnumIsNull() {
            addCriterion("m_colnum is null");
            return (Criteria) this;
        }

        public Criteria andMColnumIsNotNull() {
            addCriterion("m_colnum is not null");
            return (Criteria) this;
        }

        public Criteria andMColnumEqualTo(Long value) {
            addCriterion("m_colnum =", value, "mColnum");
            return (Criteria) this;
        }

        public Criteria andMColnumNotEqualTo(Long value) {
            addCriterion("m_colnum <>", value, "mColnum");
            return (Criteria) this;
        }

        public Criteria andMColnumGreaterThan(Long value) {
            addCriterion("m_colnum >", value, "mColnum");
            return (Criteria) this;
        }

        public Criteria andMColnumGreaterThanOrEqualTo(Long value) {
            addCriterion("m_colnum >=", value, "mColnum");
            return (Criteria) this;
        }

        public Criteria andMColnumLessThan(Long value) {
            addCriterion("m_colnum <", value, "mColnum");
            return (Criteria) this;
        }

        public Criteria andMColnumLessThanOrEqualTo(Long value) {
            addCriterion("m_colnum <=", value, "mColnum");
            return (Criteria) this;
        }

        public Criteria andMColnumIn(List<Long> values) {
            addCriterion("m_colnum in", values, "mColnum");
            return (Criteria) this;
        }

        public Criteria andMColnumNotIn(List<Long> values) {
            addCriterion("m_colnum not in", values, "mColnum");
            return (Criteria) this;
        }

        public Criteria andMColnumBetween(Long value1, Long value2) {
            addCriterion("m_colnum between", value1, value2, "mColnum");
            return (Criteria) this;
        }

        public Criteria andMColnumNotBetween(Long value1, Long value2) {
            addCriterion("m_colnum not between", value1, value2, "mColnum");
            return (Criteria) this;
        }

        public Criteria andMLikeIsNull() {
            addCriterion("m_like is null");
            return (Criteria) this;
        }

        public Criteria andMLikeIsNotNull() {
            addCriterion("m_like is not null");
            return (Criteria) this;
        }

        public Criteria andMLikeEqualTo(Long value) {
            addCriterion("m_like =", value, "mLike");
            return (Criteria) this;
        }

        public Criteria andMLikeNotEqualTo(Long value) {
            addCriterion("m_like <>", value, "mLike");
            return (Criteria) this;
        }

        public Criteria andMLikeGreaterThan(Long value) {
            addCriterion("m_like >", value, "mLike");
            return (Criteria) this;
        }

        public Criteria andMLikeGreaterThanOrEqualTo(Long value) {
            addCriterion("m_like >=", value, "mLike");
            return (Criteria) this;
        }

        public Criteria andMLikeLessThan(Long value) {
            addCriterion("m_like <", value, "mLike");
            return (Criteria) this;
        }

        public Criteria andMLikeLessThanOrEqualTo(Long value) {
            addCriterion("m_like <=", value, "mLike");
            return (Criteria) this;
        }

        public Criteria andMLikeIn(List<Long> values) {
            addCriterion("m_like in", values, "mLike");
            return (Criteria) this;
        }

        public Criteria andMLikeNotIn(List<Long> values) {
            addCriterion("m_like not in", values, "mLike");
            return (Criteria) this;
        }

        public Criteria andMLikeBetween(Long value1, Long value2) {
            addCriterion("m_like between", value1, value2, "mLike");
            return (Criteria) this;
        }

        public Criteria andMLikeNotBetween(Long value1, Long value2) {
            addCriterion("m_like not between", value1, value2, "mLike");
            return (Criteria) this;
        }

        public Criteria andMDateIsNull() {
            addCriterion("m_date is null");
            return (Criteria) this;
        }

        public Criteria andMDateIsNotNull() {
            addCriterion("m_date is not null");
            return (Criteria) this;
        }

        public Criteria andMDateEqualTo(Date value) {
            addCriterionForJDBCDate("m_date =", value, "mDate");
            return (Criteria) this;
        }

        public Criteria andMDateNotEqualTo(Date value) {
            addCriterionForJDBCDate("m_date <>", value, "mDate");
            return (Criteria) this;
        }

        public Criteria andMDateGreaterThan(Date value) {
            addCriterionForJDBCDate("m_date >", value, "mDate");
            return (Criteria) this;
        }

        public Criteria andMDateGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("m_date >=", value, "mDate");
            return (Criteria) this;
        }

        public Criteria andMDateLessThan(Date value) {
            addCriterionForJDBCDate("m_date <", value, "mDate");
            return (Criteria) this;
        }

        public Criteria andMDateLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("m_date <=", value, "mDate");
            return (Criteria) this;
        }

        public Criteria andMDateIn(List<Date> values) {
            addCriterionForJDBCDate("m_date in", values, "mDate");
            return (Criteria) this;
        }

        public Criteria andMDateNotIn(List<Date> values) {
            addCriterionForJDBCDate("m_date not in", values, "mDate");
            return (Criteria) this;
        }

        public Criteria andMDateBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("m_date between", value1, value2, "mDate");
            return (Criteria) this;
        }

        public Criteria andMDateNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("m_date not between", value1, value2, "mDate");
            return (Criteria) this;
        }

        public Criteria andMBodyIsNull() {
            addCriterion("m_body is null");
            return (Criteria) this;
        }

        public Criteria andMBodyIsNotNull() {
            addCriterion("m_body is not null");
            return (Criteria) this;
        }

        public Criteria andMBodyEqualTo(String value) {
            addCriterion("m_body =", value, "mBody");
            return (Criteria) this;
        }

        public Criteria andMBodyNotEqualTo(String value) {
            addCriterion("m_body <>", value, "mBody");
            return (Criteria) this;
        }

        public Criteria andMBodyGreaterThan(String value) {
            addCriterion("m_body >", value, "mBody");
            return (Criteria) this;
        }

        public Criteria andMBodyGreaterThanOrEqualTo(String value) {
            addCriterion("m_body >=", value, "mBody");
            return (Criteria) this;
        }

        public Criteria andMBodyLessThan(String value) {
            addCriterion("m_body <", value, "mBody");
            return (Criteria) this;
        }

        public Criteria andMBodyLessThanOrEqualTo(String value) {
            addCriterion("m_body <=", value, "mBody");
            return (Criteria) this;
        }

        public Criteria andMBodyLike(String value) {
            addCriterion("m_body like", value, "mBody");
            return (Criteria) this;
        }

        public Criteria andMBodyNotLike(String value) {
            addCriterion("m_body not like", value, "mBody");
            return (Criteria) this;
        }

        public Criteria andMBodyIn(List<String> values) {
            addCriterion("m_body in", values, "mBody");
            return (Criteria) this;
        }

        public Criteria andMBodyNotIn(List<String> values) {
            addCriterion("m_body not in", values, "mBody");
            return (Criteria) this;
        }

        public Criteria andMBodyBetween(String value1, String value2) {
            addCriterion("m_body between", value1, value2, "mBody");
            return (Criteria) this;
        }

        public Criteria andMBodyNotBetween(String value1, String value2) {
            addCriterion("m_body not between", value1, value2, "mBody");
            return (Criteria) this;
        }

        public Criteria andMImageIsNull() {
            addCriterion("m_image is null");
            return (Criteria) this;
        }

        public Criteria andMImageIsNotNull() {
            addCriterion("m_image is not null");
            return (Criteria) this;
        }

        public Criteria andMImageEqualTo(String value) {
            addCriterion("m_image =", value, "mImage");
            return (Criteria) this;
        }

        public Criteria andMImageNotEqualTo(String value) {
            addCriterion("m_image <>", value, "mImage");
            return (Criteria) this;
        }

        public Criteria andMImageGreaterThan(String value) {
            addCriterion("m_image >", value, "mImage");
            return (Criteria) this;
        }

        public Criteria andMImageGreaterThanOrEqualTo(String value) {
            addCriterion("m_image >=", value, "mImage");
            return (Criteria) this;
        }

        public Criteria andMImageLessThan(String value) {
            addCriterion("m_image <", value, "mImage");
            return (Criteria) this;
        }

        public Criteria andMImageLessThanOrEqualTo(String value) {
            addCriterion("m_image <=", value, "mImage");
            return (Criteria) this;
        }

        public Criteria andMImageLike(String value) {
            addCriterion("m_image like", value, "mImage");
            return (Criteria) this;
        }

        public Criteria andMImageNotLike(String value) {
            addCriterion("m_image not like", value, "mImage");
            return (Criteria) this;
        }

        public Criteria andMImageIn(List<String> values) {
            addCriterion("m_image in", values, "mImage");
            return (Criteria) this;
        }

        public Criteria andMImageNotIn(List<String> values) {
            addCriterion("m_image not in", values, "mImage");
            return (Criteria) this;
        }

        public Criteria andMImageBetween(String value1, String value2) {
            addCriterion("m_image between", value1, value2, "mImage");
            return (Criteria) this;
        }

        public Criteria andMImageNotBetween(String value1, String value2) {
            addCriterion("m_image not between", value1, value2, "mImage");
            return (Criteria) this;
        }

        public Criteria andMStateIsNull() {
            addCriterion("m_state is null");
            return (Criteria) this;
        }

        public Criteria andMStateIsNotNull() {
            addCriterion("m_state is not null");
            return (Criteria) this;
        }

        public Criteria andMStateEqualTo(Long value) {
            addCriterion("m_state =", value, "mState");
            return (Criteria) this;
        }

        public Criteria andMStateNotEqualTo(Long value) {
            addCriterion("m_state <>", value, "mState");
            return (Criteria) this;
        }

        public Criteria andMStateGreaterThan(Long value) {
            addCriterion("m_state >", value, "mState");
            return (Criteria) this;
        }

        public Criteria andMStateGreaterThanOrEqualTo(Long value) {
            addCriterion("m_state >=", value, "mState");
            return (Criteria) this;
        }

        public Criteria andMStateLessThan(Long value) {
            addCriterion("m_state <", value, "mState");
            return (Criteria) this;
        }

        public Criteria andMStateLessThanOrEqualTo(Long value) {
            addCriterion("m_state <=", value, "mState");
            return (Criteria) this;
        }

        public Criteria andMStateIn(List<Long> values) {
            addCriterion("m_state in", values, "mState");
            return (Criteria) this;
        }

        public Criteria andMStateNotIn(List<Long> values) {
            addCriterion("m_state not in", values, "mState");
            return (Criteria) this;
        }

        public Criteria andMStateBetween(Long value1, Long value2) {
            addCriterion("m_state between", value1, value2, "mState");
            return (Criteria) this;
        }

        public Criteria andMStateNotBetween(Long value1, Long value2) {
            addCriterion("m_state not between", value1, value2, "mState");
            return (Criteria) this;
        }

        public Criteria andMTagIsNull() {
            addCriterion("m_tag is null");
            return (Criteria) this;
        }

        public Criteria andMTagIsNotNull() {
            addCriterion("m_tag is not null");
            return (Criteria) this;
        }

        public Criteria andMTagEqualTo(Long value) {
            addCriterion("m_tag =", value, "mTag");
            return (Criteria) this;
        }

        public Criteria andMTagNotEqualTo(Long value) {
            addCriterion("m_tag <>", value, "mTag");
            return (Criteria) this;
        }

        public Criteria andMTagGreaterThan(Long value) {
            addCriterion("m_tag >", value, "mTag");
            return (Criteria) this;
        }

        public Criteria andMTagGreaterThanOrEqualTo(Long value) {
            addCriterion("m_tag >=", value, "mTag");
            return (Criteria) this;
        }

        public Criteria andMTagLessThan(Long value) {
            addCriterion("m_tag <", value, "mTag");
            return (Criteria) this;
        }

        public Criteria andMTagLessThanOrEqualTo(Long value) {
            addCriterion("m_tag <=", value, "mTag");
            return (Criteria) this;
        }

        public Criteria andMTagIn(List<Long> values) {
            addCriterion("m_tag in", values, "mTag");
            return (Criteria) this;
        }

        public Criteria andMTagNotIn(List<Long> values) {
            addCriterion("m_tag not in", values, "mTag");
            return (Criteria) this;
        }

        public Criteria andMTagBetween(Long value1, Long value2) {
            addCriterion("m_tag between", value1, value2, "mTag");
            return (Criteria) this;
        }

        public Criteria andMTagNotBetween(Long value1, Long value2) {
            addCriterion("m_tag not between", value1, value2, "mTag");
            return (Criteria) this;
        }

        public Criteria andMTStateIsNull() {
            addCriterion("m_t_state is null");
            return (Criteria) this;
        }

        public Criteria andMTStateIsNotNull() {
            addCriterion("m_t_state is not null");
            return (Criteria) this;
        }

        public Criteria andMTStateEqualTo(Long value) {
            addCriterion("m_t_state =", value, "mTState");
            return (Criteria) this;
        }

        public Criteria andMTStateNotEqualTo(Long value) {
            addCriterion("m_t_state <>", value, "mTState");
            return (Criteria) this;
        }

        public Criteria andMTStateGreaterThan(Long value) {
            addCriterion("m_t_state >", value, "mTState");
            return (Criteria) this;
        }

        public Criteria andMTStateGreaterThanOrEqualTo(Long value) {
            addCriterion("m_t_state >=", value, "mTState");
            return (Criteria) this;
        }

        public Criteria andMTStateLessThan(Long value) {
            addCriterion("m_t_state <", value, "mTState");
            return (Criteria) this;
        }

        public Criteria andMTStateLessThanOrEqualTo(Long value) {
            addCriterion("m_t_state <=", value, "mTState");
            return (Criteria) this;
        }

        public Criteria andMTStateIn(List<Long> values) {
            addCriterion("m_t_state in", values, "mTState");
            return (Criteria) this;
        }

        public Criteria andMTStateNotIn(List<Long> values) {
            addCriterion("m_t_state not in", values, "mTState");
            return (Criteria) this;
        }

        public Criteria andMTStateBetween(Long value1, Long value2) {
            addCriterion("m_t_state between", value1, value2, "mTState");
            return (Criteria) this;
        }

        public Criteria andMTStateNotBetween(Long value1, Long value2) {
            addCriterion("m_t_state not between", value1, value2, "mTState");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}